import pygtk
pygtk.require('2.0')
import gobject
import gtk
import altremerdate

import sys
sys.path.append("..")
import merdim #da cambiare :)..

class Core:
    def __init__(self):
        merdate iniziali
    
    #tutte le def per creare la main_window, fai una cosa ben divisa, varie def
    # come: create_treeview, create_textview, ecc.
    
    def remove_tree(self, server_name):
        #rimuove la data tree dalla treeview partendo dal server_name
        # server_name: str with server's name
        return True #in caso sia andato tutto a buon fine
        return (False, server_name+":doesnt' exist")
            #in caso server_name non esista nella treeview
    
    def add_tree(self, server_name):
        #aggiunge alla treeview un main tree
        # server_name: str with server's name
        return True #in caso sia andato tutto a buon fine
        return (False, server_name+":has already been added")
            #in caso server_name gia' esiste nella treeview
    
    def add_subtree(self, server_name, channel_name):
        """ varra' lo stesso per query da altri utenti """
        #aggiunge un 'ramo' nella tree: server_name
        # server_name: str with server's name
        # channel_name: str with channel's name
        return True #in caso sia andato tutto a buon fine
        return (False, server_name+":has already been added")
            #in caso server_name non esiste nella treeview
        return (False, channel_namee+":has already been added")
            #in caso channel_name gia' esiste nella tree
    
    def remove_subtree(self, server_name, channel_name):
        """ varra' lo stesso per query da altri utenti """
        #rimuove il 'ramo' nella tree: server_name
        # server_name: str with server's name
        # channel_name: str with channel's name
        return True #in caso sia andato tutto a buon fine
        return (False, server_name+":doesn't exist")
            #in caso server_name non esiste nella treeview
        return (False, channel_name+":doesn't exist")
            #in caso channel_name non esiste nella tree
    
    def insert_text(self, text, server_name=None, channel_name=None):
        #aggiunge 'text' nel buff del corrente channel
        #se channel_name e server_name non sono None aggiunge 'text' in questi
        #se channel_name e' None ma server_name e' str prendera' il buff del server_name
        # text: str
        # server_name: str with server's name
        # channel_name: str with channel's name *se non c'e' la mette nel buff del server!*
        return True #in caso sia andato tutto a buon fine
        return (False, server_name+":doesn't exist")
            #in caso server_name non esiste nella treeview
        return (False, channel_name+":doesn't exist in:"+server_name)
            #in caso channel_name non si trovi nel tree server_name
        return (False, str(text)+":isn't a valid str")
            #in caso text non sia una str o sia un tipo 'indecifrabile' di str
            # succede spesso con testi molto grandi, tipo inviati dal server, roba strana
    
    def add_user(self, user, server_name, channel_name):
        #aggiunge 'user' nella userlist del channel_name nel server_name
        # varie aggiunte per il nuovo user
        # user: str
        # server_name: str with server's name
        # channel_name: str with channel's name
        return True #in caso sia andato tutto a buon fine
        return (False, server_name+":doesn't exist")
            #in caso server_name non esiste
        return (False, channel_name+":doesn't exist in:"+server_name)
            #in caso channel_name non si trovi in server_name
        return (False, user+":has already been added")
            #in caso user esitesse gia' nella userlist

    def remove_user(self, user, server_name, channel_name):
        #rimuove 'user' nella userlist del channel_name nel server_name
        # rimuove le varie 'cose' appartenenti all'user
        # user: str
        # server_name: str with server's name
        # channel_name: str with channel's name
        return True #in caso sia andato tutto a buon fine
        return (False, server_name+":doesn't exist")
            #in caso server_name non esiste
        return (False, channel_name+":doesn't exist in:"+server_name)
            #in caso channel_name non si trovi in server_name
        return (False, user+":doesn't exist")
            #in caso user non esistesse gia' nell userlist

    def start(self):
        gtk.show_all() #? dopo aver creato tutti i widget ecc. li avvia